package com.day17;

import org.junit.Test;

import java.util.List;

/**
 * 1.关于自定义泛型类，泛型接口的使用
 */
public class GenericTest1 {

    @Test
    public void test1() {

        //如果不使用泛型，则此泛型类型默认为Object类型
        //要求:如果大家定义了类是带泛型的，建议在实例化时要指明类的泛型。
        Order order = new Order();
        order.setOrderT(123);
        order.setOrderT("ABC");

        //建议:实例化指明类的泛型。
        Order<String> order1 = new Order<String>("orderAA", 1001, "order:AA");
        order1.setOrderT("demo:hello");



    }

    @Test
    public void test2(){
        //子类继承泛型类，并制定泛型类型后，在实例化时不需要在指定泛型
        SubOrder subOrder = new SubOrder();
        subOrder.setOrderT(123);

        SubOrder1<String> stringSubOrder1 = new SubOrder1<>();

        stringSubOrder1.setOrderT("order2...");
    }

    //测试泛型方法
    @Test
    public void test4(){
        Order<String> order = new Order<>();
        Integer[] arr = new Integer[]{1,2,3,4};
        //泛型方法的调用时，指明泛型参数的类型。
        List<Integer> integers = order.coprFormArrayToList(arr);

        System.out.println(integers);

    }

}
